快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 | 您所在的位置:网站首页 › uml类图 接口 › 快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图 |
快速读懂UML类图,搞懂类之间的6大关系,轻松绘制UML类图
前言一、UML类图简介二、类之间的六大关系及UML类图1、依赖关系及UML类图表示2、泛化关系及UML类图表示3、实现关系及UML类图表示4、关联关系及UML类图表示5、聚合关系及UML类图表示6、组合关系及UML类图表示
三、如何绘制UML类图?1. IDEA安装PlantUML Intergration插件2. PlantUML用法3. PlantUML绘制UML类图的常见语法3.1 语法精髓3.2 绘制类与类之间的依赖关系语法3.3 绘制类与类之间的泛化关系语法3.4 绘制类与类之间的实现关系语法3.5 绘制类与类之间的关联关系语法3.6 绘制类与类之间的聚合关系语法3.7 绘制类与类之间的组合关系语法
四、UML类图所有类之间关系及符号表示一览图
前言
一个合格的程序员,要想成长为一个高级工程师,不仅仅需要大量代码的编写,更需要对设计模式具有深入的了解和灵活的应用。从本篇文章开始,我将通过对【尚硅谷设计模式】视频课程的学习总结,尝试以最简单,最通俗易懂的方式完成对设计模式的讲解。 学习设计模式必不可少的一项能力就是能读懂UML类图,能够将自己的设计思路绘制成UML类图便于相互交流,其实稍有经验的程序员应该对UML类图都不陌生,因为我们平常会使用很多二次开发包,一般二次开发包都会提供一份包含本开发包的所有类相关的UML类图,通过UML类图可以让程序员快速的了解开发包中各个类的功能以及各个类之间的关系。 因为后面设计模式,都离不开UML类图进行解释说明,为避免有些博友对UML类图不是很清楚,本文详细讲解和梳理UML类图,并介绍通过为IDEA安装PlantUML Intergration插件实现UML类图的绘制,为后续设计模式的讲解做铺垫。本文所有代码都是以JAVA语言为例。 一、UML类图简介统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。简单来说UML就是通过一系列规定好的符号,将复杂的文字表述转为清晰明了的符号关系图。 UML图分为三大类: 用例图静态结构图:类图,对象图,包图,组件图,部署图动态行为图:交互图(时序图与协作图),状态图,活动图对于软件开发来说,最常用的就是UML类图,类图通过一系列规定好的符号对类与类之间的关系进行描述。 类图中类与类之间主要包括六大关系,描述这些关系的符号如下图所示。 只要一个类用到了其它类,那这个类和其它类就构成了依赖关系。如A类中用到了B,C,D类,则A类就依赖于B,C,D类。 那么一个类如何算用到了其它类?有以下几种情况: 其它类作为该类的成员属性,这种情况下,如A类用到了B类的代码示例。 class A{ private B b; } 其它类作为该类中方法的接收参数类型,这种情况下,如A类用到了B类的代码示例。 class A{ public void test(B b) { //... } } 其它类作为该类中方法的返回参数类型,这种情况下,如A类用到了B类的代码示例。 class A{ public B test() { //... return null; } } 其它类在该类的方法中使用到,这种情况下,如A类用到了B类的代码示例。 class A{ public void test() { B b; System.out.println(b.toString()); } }以上四种情况,都称作A类依赖于B类,UML类图中依赖关系由虚线加实心箭头表示,由依赖方指向被依赖方,A类依赖于B类的UML类图表示如下: 泛化关系就是继承关系,它是继承关系的特例。如A类与B类之间是泛化关系,B类继承于A类,示例代码如下: class B { } class A extends B { }泛化关系也就是继承关系,在UML类图中由实线加空心箭头表示,由继承方指向被继承方,如A类继承自B类的UML类图表示如下: 实现关系就是指一个类对另一个接口的实现,它也是依赖关系的特例。如A类与B接口直接是实现关系,A类实现B接口的代码示例如下: class A implements B { } interface B { }实现关系在UML类图中由虚线加空心箭头表示,由实现方指向接口方,如A类实现B接口的UML类图表示如下: 关联关系是指类与类之间的联系,它也是依赖关系的特例。类与类之间的关联关系包括如下几种情况: 一对一,如一个人(Person)只能对应一个身份证(IDCard),而一个身份证只能对应一个人,代码示例如下: class Person { private IDCard idCard;//一个人对应一个身份证 } class IDCard { private Person person;//一个身份证对应一个人 }关联关系在UML类图中是由实线加实心箭头表示,该案例在UML类图中的表达如下所示: 该案例在UML类图中的表达如下所示: 该案例在UML类图中的表达如下所示: 聚合关系表示的是整体与部分的关系,但整体与部分可以分开,整体没了,部分还存在。它是关联关系的特例,聚合关系一般通过set方法将部分注入到整体中。 如一个电脑(Computer)有键盘(Keyboard),鼠标(Mouse)等组成,电脑坏了,不一定代码键盘和鼠标就不能用了。示例代码如下: class Computer { private Keyboard keyboard; private Mouse mouse; public void setKeyboard(Keyboard keyboard) { this.keyboard = keyboard; } public void setMouse(Mouse mouse) { this.mouse = mouse; } } class Keyboard { //... } class Mouse { //... }聚合关系在UML类图中由实线和空心菱形表示,由部分指向整体,该案例在UML类图中的表达如下所示: 组合关系表示的也是整体与部分的关系,但整体与部分不可分开,表现出同生共死的关系。它是关联关系的特例,组合关系一般在整体创建的时候就自动创建部分了。 如一个人(Person)由头(Head)、手(Hand)、腿(Leg)等构成,一个人可以没有手和腿,但是一定不能没有头,因此人与头是组合关系,而人与手和腿是聚合关系,示例代码如下: class Person { private Head head=new Head();//与Person是组合关系,Person创建,则Head创建;Person销毁,则Head销毁; private Hand hand;//与Person是聚合关系 private Leg leg;//与Person是聚合关系 public void setHand(Hand hand) { this.hand = hand; } public void setLeg(Leg leg) { this.leg = leg; } } class Head { } class Hand { } class Leg { }组合关系在UML类图中由实线和实心菱形表示,由部分指向整体,该案例在UML类图中的表达如下所示: 打开IDEA,点击File -> Settings,打开Settings窗口,选择Plugins,在搜索栏搜索PlantUML,点击PlantUML Intergration 后面的安装,完成插件安装,重启IDEA后,即可使用该插件。 ![]() ![]() ![]() UML类图中最重要的就是绘制类与类之间的关系,每种关系有不同的图形元素连接,每种图形元素对应不同的语法,我总结出UML类图中涉及的图形元素及其对应的语法如下: 实线 对应语法是两个减号 “–”虚线 对应语法是两个点 “…”实心左箭头 对应语法是一个左括号 “”空心箭头 对应语法是一个左括号加竖线 “ |
CopyRight 2018-2019 实验室设备网 版权所有 |